﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BUS;
using DTO;

namespace QuanLyKhachSan
{
    public partial class FmPhong_ChiTietPhieuThue : Form
    {
        int m_maphieu;
        LoaiKhachHangBUS bus = new LoaiKhachHangBUS();
        PhieuThueChiTietBUS busChitiet = new PhieuThueChiTietBUS();
        public FmPhong_ChiTietPhieuThue(string MaPhong)
        {
            InitializeComponent();
            lbmaphong.Text = MaPhong.ToString();
        }

        private void btnThuePhong_Click(object sender, EventArgs e)
        {
            txtCMND.Text = "";
            txtCMND.Text = "";
            txtMaKhachHang.Text = "";
            txtTenKH.Text = "";
        }

        private void btnThemKH_Click(object sender, EventArgs e)
        {
            

        }
        public ListChiTietPhieuDTO ChiTietPhieu(int maPhieuthue)
        {
            ListChiTietPhieuDTO list = new ListChiTietPhieuDTO();
            PhieuThueChiTietDTO dto = new PhieuThueChiTietDTO();
            
            if (String.IsNullOrEmpty(txtTenKH.Text))
            {
                MessageBox.Show("Vui lòng nhập tên khách hàng");
                
            }
            else if(String.IsNullOrEmpty(txtCMND.Text))
            {
                MessageBox.Show("Vui lòng nhập CMND");
            }
            else if (String.IsNullOrEmpty(txtDiaCHi.Text))
            {
                MessageBox.Show("Vui lòng nhập địa chỉ");
            }
            else
            {
                dto.Maloaikh = int.Parse(cbLoaiKhachHang.SelectedValue.ToString());
                dto.Tenkh = txtTenKH.Text;
                dto.Cmnd = txtCMND.Text;
                dto.Diachi = txtDiaCHi.Text;
                dto.Maphieu = maPhieuthue;
                list.Dsphieu.Add(dto);
            }
            return list;
        }

        private void FmPhong_ChiTietPhieuThue_Load(object sender, EventArgs e)
        {
            LoadLoaiKH(gridcbLoaiKH);
            LoaiLoaiKH();
            LoadChiTietTheoMaPhieuPhong();
            
            
        }
        public void LoadLoaiKH(DataGridViewComboBoxColumn cmb)
        {

            cmb.DataSource = bus.LoadLoaiKH();// lấy dữ lieu
            cmb.DisplayMember = "TenLoaiKH";
            cmb.ValueMember = "MaLoaiKH";
            cmb.DataPropertyName = "MaLoaiKH";

        }
        public void LoaiLoaiKH()
        {
            cbLoaiKhachHang.DataSource = bus.LoadLoaiKH();
            cbLoaiKhachHang.DisplayMember = "TenLoaiKH";
            cbLoaiKhachHang.ValueMember = "MaLoaiKH";

        }
        public void LoadChiTietTheoMaPhieuPhong()
        {
            DataTable dt = new DataTable();
            PhieuThueBUS bus = new PhieuThueBUS();
            m_maphieu = bus.LayPhieuThueMaxTheoPhong(lbmaphong.Text);
            gidThongTin.DataSource = busChitiet.loadChiTietTheoMaPhieu(m_maphieu);
            dt = bus.LayThongTinPhieuThue(m_maphieu);
            lbgia.Text = dt.Rows[0]["Gia"].ToString();
            lbdate.Text = String.Format("{0:dd-MM-yyyy}", dt.Rows[0]["NgayThue"]);

        }

        private void gidThongTin_SelectionChanged(object sender, EventArgs e)
        {
            try
            {
                txtTenKH.Text = gidThongTin.CurrentRow.Cells["TenKH"].Value.ToString();
                txtDiaCHi.Text = gidThongTin.CurrentRow.Cells["DiaChi"].Value.ToString();
                txtCMND.Text = gidThongTin.CurrentRow.Cells["CMND"].Value.ToString();
                txtMaKhachHang.Text = gidThongTin.CurrentRow.Cells["MaKH"].Value.ToString();
                cbLoaiKhachHang.SelectedValue = gidThongTin.CurrentRow.Cells["gridcbLoaiKH"].Value.ToString();
            }
            catch { }
            
        }
        DialogResult delete;
        private void gidThongTin_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Delete)
            {
                int i = gidThongTin.SelectedRows.Count;
                if (i > 0)
                {
                    delete = MessageBox.Show("Bạn thực sự muốn làm diêu này!!",
    "Cảnh báo khi xóa ", MessageBoxButtons.OKCancel);
                    if (delete == DialogResult.OK)
                    {

                        foreach (DataGridViewRow row in gidThongTin.SelectedRows)
                        {
                            try
                            {
                                int CTselected = Int32.Parse(row.Cells["MaCT"].Value.ToString());
                                busChitiet.XoaCT(CTselected);
                            }
                            catch
                            {
                                MessageBox.Show("Lỗi");
                            }


                        }
                    }
                    else
                        return;
                }
                else
                    MessageBox.Show("Chọn đầu dòng và nhấn delete/Xóa để xóa dòng cần xóa");
            }
            
                
            }

        private void gidThongTin_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
        {
            

            // Check if the Starting Balance row is included in the selected rows
            if (delete == DialogResult.Cancel)
            {
                // Do not allow the user to delete the Starting Balance row.
              

                // Cancel the deletion if the Starting Balance row is included.
                e.Cancel = true;
            }
        }

        private void gidThongTin_UserDeletedRow(object sender, DataGridViewRowEventArgs e)
        {
            LoadChiTietTheoMaPhieuPhong();
        }
        public KhachHangDTO getVauleFromTextBox()
        {
            KhachHangDTO dto = new KhachHangDTO();
            dto.Makh = Int32.Parse(txtMaKhachHang.Text);
            dto.Maloaikh = Int32.Parse(cbLoaiKhachHang.SelectedValue.ToString());
            dto.Tenkh = txtTenKH.Text;
            dto.Diachi = txtDiaCHi.Text;
            dto.Cmnd = txtCMND.Text;
            return dto;
            
        }

        private void gidThongTin_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            try
            {
                txtTenKH.Text = gidThongTin.CurrentRow.Cells["TenKH"].Value.ToString();
                txtDiaCHi.Text = gidThongTin.CurrentRow.Cells["DiaChi"].Value.ToString();
                txtCMND.Text = gidThongTin.CurrentRow.Cells["CMND"].Value.ToString();
                txtMaKhachHang.Text = gidThongTin.CurrentRow.Cells["MaKH"].Value.ToString();
                cbLoaiKhachHang.SelectedValue = gidThongTin.CurrentRow.Cells["gridcbLoaiKH"].Value.ToString();
            }
            catch { }
        }

        #region Xuly tren button
        private void btnThemKhachHang_Click(object sender, EventArgs e)
        {
            ThamSoBUS bus = new ThamSoBUS();
            int succhua = bus.LayThamSo().Succhua;

            if (gidThongTin.Rows.Count != succhua)
            {
                busChitiet.ThemChiTietPhieuThueBUS(ChiTietPhieu(m_maphieu));
                LoadChiTietTheoMaPhieuPhong();
            }
            else
            {
                MessageBox.Show("Số khách tối đa thêm vào của phòng là " + succhua);
            }
        }

        private void btnThemMoi_Click(object sender, EventArgs e)
        {
            txtCMND.Text = "";
            txtDiaCHi.Text = "";
            txtMaKhachHang.Text = "";
            txtTenKH.Text = "";
        }

        private void btnUpdate_Click(object sender, EventArgs e)
        {
            KhachHangBUS bus = new KhachHangBUS();
            if (bus.Update(getVauleFromTextBox()) == 1)
            {
                LoadChiTietTheoMaPhieuPhong();
                MessageBox.Show("Cập nhật thông tin khách hàng thành công");
            }
            else
                MessageBox.Show("Cập nhật thất bại");
        }

        private void btnDel_Click(object sender, EventArgs e)
        {
            int i = gidThongTin.SelectedRows.Count;
            if (i > 0)
            {
                delete = MessageBox.Show("Bạn thực sự muốn làm diêu này!!",
"Cảnh báo khi xóa ", MessageBoxButtons.OKCancel);
                if (delete == DialogResult.OK)
                {
                    foreach (DataGridViewRow row in gidThongTin.SelectedRows)
                    {
                        try
                        {
                            int CTselected = Int32.Parse(row.Cells["MaCT"].Value.ToString());
                            busChitiet.XoaCT(CTselected);


                        }
                        catch
                        {
                            MessageBox.Show("Lỗi");
                        }
                    }
                    LoadChiTietTheoMaPhieuPhong();
                }
                else
                    return;
            }
            else
            {
                MessageBox.Show("Vui lòng chọn dòng để xóa");
            }
            
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

    }
}
        #endregion